The advent of multimedia personal computers (MPCs) is likely to revolutionize the home entertainment industry. Generally, an MPC consists of a powerful microprocessor, e.g., an Intel 386 microprocessor; a VGA monitor; a sound card; at least 2 megabytes of RAM; and a CD-ROM drive.
In order for an application program to completely realize the potential of an MPC, it must use these components to their fullest abilities. The desire to play a video movie on an MPC, while taking maximum advantage of the system's components, provided the impetus for the present invention.
In order to be aesthetically pleasing, video movies can be played at 15 frames per second. However, the standard CD-ROM drive can provide only 150K bytes of data per second. Therefore, a compression method, in order to produce a movie suitable for display on an MPC, must compress each frame of the movie to approximately 10K bytes: [(150K bytes/sec)/(15 frames/sec)=10K bytes/frame.]
However, developing a standard method which can consistently compress frames to this size--without losing substantial amounts of information--is a complicated procedure. The procedure is complicated for two fundamental reasons.
First, the size of the original raw data may vary substantially from movie to movie, e.g., a frame from a 320.times.240 pixel video movie might constitute 175K bytes of raw data while a frame from a 160.times.120 pixel video movie might constitute only 25K bytes of raw data.
Second, even within the same movie, some frames will be more difficult to compress than others. For example, a frame picturing a brightly colored meadow would inherently have more detail than a frame picturing a dimly lit street. Consequently, a compression method may not be able to encode the meadow frame to 10K bytes without unduly hampering the quality of the image.
The prior art teaches using a fixed compression rate to encode video movies for playback on an MPC. However, this approach is seriously flawed: A fixed rate of compression method will routinely either over-compress or under-compress the video data.
For example, a compression method that compresses raw data 20% of the raw data's original size would compress a raw data frame of 25K bytes to 5K bytes. Therefore, the prior art compression method would needlessly destroy 5K bytes of data. As a result, the compressed data, when expanded, yields a poor quality image.
On the other hand, the same compression method would compress a 175K byte frame of video data to only 35K bytes. In this case, the resulting compressed video data would be too large for use with an MPC.
Additionally, some prior art compression schemes encode the compressed data in a non-standard format. These prior art compression schemes are problematic because most MPC applications must translate the non-standard compressed data into a known format before the application can display the data on an MPC.
As a result, there has been a significant need for a method and system which can satisfactorily compress video, or other data, for playback at a given data rate.